import  pytest,allure
from selenium import webdriver
from autoTest_ecshop.utils.fileUtil  import read

'''
指定固件的作用范围：
session     对一个会话生效
module   对模块生效
class       对类生效
function    对方法生效
'''
url=read.get_yaml("common.yaml")["url"]

@pytest.fixture(scope="module")
def login():
    global drive
    drive = webdriver.Edge()
    drive.get(url)
    drive.maximize_window()
    drive.implicitly_wait(3)
    print("预置环境，打开浏览器，最大化浏览器")
    yield drive
    print("Test fixture")
    # 关闭浏览器
    print("close")
    drive.quit()

@pytest.fixture(scope="module")
def baidu():
    # 实例化浏览器
    dr = webdriver.Edge()
    dr.get("https://www.baidu.com")
    dr.maximize_window()
    print("我是前置步骤 --> 打开浏览器并进入百度首页 。。。")
    # 返回浏览器
    yield dr
    print("我是后置步骤 --> 关闭浏览器 。。。")
    # 关闭浏览器
    dr.quit()

@pytest.hookimpl(tryfirst=True,hookwrapper=True)
def pytest_runtest_makereport(item,call):
    #获取钩子函数的结果
    outcome= yield
    #获取测试的报告
    report = outcome.get_result()
    #脚本执行失败，截图上传到allure报告
    if report .when == "call" and report.outcome == "failed":
        allure.attach(drive.get_screenshot_as_png(),"失败截图:"
                      ,allure.attachment_type.PNG)
